package Scraping;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


import java.util.logging.Level;
import java.util.logging.Logger;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class Archivador extends Thread {

    private BaseDatos5 base;
    private int indiceEnBD=1;

    public Archivador() {
        base = new BaseDatos5(2);
    }

    @Override
    public void run() {
       
        try {
            this.sleep(2000);
        } catch (InterruptedException ex) {
            System.out.println("ERROR en el sleep!");
            System.out.println(ex.toString());
        }
        
        boolean bande = true; //para saber cuando leyo el ultimo link de la base de datos
        while (bande) {
            try {
                
                String url = base.returnURL(indiceEnBD);
                indiceEnBD++;
                if (url.compareTo("") != 0) {
                    Document doc = Jsoup.connect(url).get();
                    
                    //Tomar el nombre titulo de la pagina para ponerlo como nombre del archivo
                    Element tituloElement = doc.getElementById("firstHeading");
                    Elements titulos = tituloElement.getElementsByTag("span");
                    String titulo = titulos.text();

                    //Limitar el contenido a la parte del texto central.
                    Element content = doc.getElementById("mw-content-text");

                    Elements elementos = content.children();

                    String cadena = titulo + " " + "\n";
                    for (Element elemento : elementos) {
                        if (elemento.tagName().compareTo("p") == 0) {
                            cadena = cadena + elemento.text();
                            //cadena= cadena.concat(elemento.text());
                        } else {
                            if (elemento.tagName().compareTo("ul") == 0) {
                                cadena = cadena.concat(elemento.text());
                            } else {
                                if (elemento.tagName().compareTo("h2") == 0) {
                                    boolean ban = false; // para saber si llego a la parte de "Enlaces Externos" y hay que terminar el bucle
                                    Elements e = elemento.getElementsByClass("mw-headline");

                                    for (Element ele : e) {
                                        String h = ele.text();
                                        if (ele.text().compareTo("Enlaces externos") == 0) {
                                            ban = true;
                                        } else {
                                            cadena = cadena.concat(ele.text() + "\n");
                                        }
                                    }
                                    if (ban) {
                                        break;
                                    }
                                } else {
                                    if (elemento.tagName().compareTo("table") == 0) {
                                        if (elemento.getElementsByTag("h2").text().compareTo("Contenido") != 0) {
                                            cadena = cadena.concat(elemento.text());
                                        }
                                    }
                                }
                            }
                        }
                    }
                    System.out.println("Grabando Archivo: "+this.indiceEnBD +"- "+ titulo);
                    try {
                        Archivo4 ar = new Archivo4(this.indiceEnBD +"- "+titulo, cadena);
                    } catch (Exception ex) {
                        System.out.println("ERROR al grabar el archivo");
                        System.out.println(ex.toString());
                    }
                } else {
                    bande = false;
                }
            } catch (Exception ex) {
                System.out.println("ERROR al leer la url");
                System.out.println(ex.toString());
            }
        }
        System.out.println("Termino!");
    }
}
